package javaCode.chapter10.enum_;

/**
 * @author 徐州城
 * @version 1.0
 * 演示Enum类的各种方法的使用
 */
public class EnumMethod {
    public static void main(String[] args) {
        //使用Season2 枚举类，来演示各种类
        Season2_ autumn = Season2_.AUTUMN;
        //输出枚举对象的名字
        System.out.println(autumn.name());
        //ordinal() 输出的是该枚举对象的次序/序号，从零开始编号
        //AUTUMN 枚举对象是第三个，因此输出 2
        System.out.println(autumn.ordinal());
        //从反编译可以看出 values方法 返回的是Season2[]
        //含有定义的枚举对象
        Season2_[] values = Season2_.values();
        for(Season2_ season2_:values){ //增强for循环
            System.out.println(season2_);
        }

        //valueOf：将字符串转换为枚举对象，要求字符串必须为已有常量名，否则就报异常
        //执行流程
        //1. 根据你输入的 "AUTUMN" 到 Season2_的枚举对象去查找
        //2. 如果找到了，就返回，如果没有找到，就报错
        Season2_ autumn1 = Season2_.valueOf("AUTUMN");
        System.out.println("autumn1=" + autumn1);
        System.out.println(autumn == autumn1);

        //compareTo：比较两个枚举常量，比较的是编号
        //解读
        //1. 就是把 Season2.AUTUMN 枚举对象编号 和 Season2.SUMMER枚举对象比较
        //2.
        /*
        public final int compareTo(E o) {
            return self.ordinal - other.ordinal;
        }
        Season2_.AUTUMN的编号[2] - Season2_.SUMMER的编号[1]
         */
        System.out.println(Season2_.AUTUMN.compareTo(Season2_.SUMMER));


//        //普通for循环
//        int nums[] = {1,2,3};
//        for (int i = 0; i < nums.length; i++) {
//            System.out.println(nums[i] + " ");
//        }
//        //增强for循环
//        //执行流程是 依次从nums数组中取出数据，赋给 i，如果取完了数据，则退出for
//        for(int i: nums) {
//            System.out.println(" i=" + i);
//        }


    }
}
